package org.chandler.ccgp.parser;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.chandler.dao.BiddingDAO;
import org.chandler.data.Bidding;
import org.chandler.util.ConstantUtil;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class ListParser {
	
	public static List<Bidding> getBiddingList(String url){
		List<Bidding> list = new ArrayList<Bidding>();
		Document doc = null;
		try {
			doc = Jsoup.parse(new URL(url).openStream(), "UTF-8", url);
		} catch (MalformedURLException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		} catch (IOException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
		Elements es = doc.getElementsByTag("li");
		int i = 1;
		for (Element e : es) {
			if(i >= 70){
				//0 招标名称
				//2 2015.07.22 23:19:31 | 采购人：桂林市七星区人民政府采购中心 | 代理机构：桂林市七星区人民政府采购中心 竞争性谈判公告 | 广西 | 货物类/办公消耗用品/其他消耗用品
				Bidding b = new Bidding();
				b.name = e.child(0).text();
				b.url = e.child(0).attr("href");
				b.interId = getInterId(b.url);
				//解析<span>html
				//2015.07.22 23:19:31 | 采购人：桂林市七星区人民政府采购中心 | 代理机构：桂林市七星区人民政府采购中心 竞争性谈判公告 | 广西 | 货物类/办公消耗用品/其他消耗用品
				String spanHtml = e.child(2).text();
				b.type = getType(spanHtml);
				b.catagory = getCatagory(spanHtml);
				b.buyer = getBuyer(spanHtml);
				b.agent = getAgent(spanHtml);
				b.location = getLocation(spanHtml);
				b.dateTime = getDateTime(spanHtml);
				b.time = dateTran(b.dateTime);
				//获取详细信息
				try {
					b.html = PageParser.getDivDetailContent(b.url);
					b.summary = PageParser.getDivText(b.url);
				} catch (MalformedURLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
				//其他设置
				b.source = ConstantUtil.CCGP_SOURCE;
				b.isFinish = true;
				BiddingDAO.insert(b);
				System.out.println("insert " + i);
			}
			i++;
		}
		return list;
	}
	
	/**
	 * 解析url获得内部id
	 * @param url
	 * @return
	 */
	private static int getInterId(String url){
		if(StringUtils.isEmpty(url)){
			return 0;
		} else {
			return Integer.valueOf(url.split("_")[1].split("\\.")[0]);
		}
	}
	/**
	 * 解析span获得string类型日期，发布日期
	 * @param spanHtml
	 * @return
	 */
	private static String getDateTime(String spanHtml){
		if(StringUtils.isEmpty(spanHtml)){
			return "";
		} else {
			return spanHtml.split("\\|")[0].trim();
		}
	}
	/**
	 * 获得招标信息类型，如公开招标、中标公告等
	 * @param spanHtml
	 * @return
	 */
	private static String getType(String spanHtml){
		if(StringUtils.isEmpty(spanHtml)){
			return "";
		} else {
			return spanHtml.split("\\|")[2].trim().split(" ")[1].trim();
		}
	}
	/**
	 * 获得招标内容的类型，如货物类、工程类
	 * @param spanHtml
	 * @return
	 */
	private static String getCatagory(String spanHtml){
		if(StringUtils.isEmpty(spanHtml)){
			return "";
		}
		//html末尾处不含有类别信息
		else if(spanHtml.split("\\|").length < 5) {
			return "";
		} 
		else {
			return spanHtml.split("\\|")[4].trim();
		}
	}
	/**
	 * 获得采购人信息
	 * @param spanHtml
	 * @return
	 */
	private static String getBuyer(String spanHtml){
		if(StringUtils.isEmpty(spanHtml)){
			return "";
		} else {
			return spanHtml.split("\\|")[1].trim().split("：")[1].trim();
		}
	}
	/**
	 * 获得招标代理机构信息
	 * @param spanHtml
	 * @return
	 */
	private static String getAgent(String spanHtml){
		if(StringUtils.isEmpty(spanHtml)){
			return "";
		} else {
			return spanHtml.split("\\|")[2].trim().split(" ")[0].trim().split("：")[1].trim();
		}
	}
	/**
	 * 获得招标地域
	 * @param spanHtml
	 * @return
	 */
	private static String getLocation(String spanHtml){
		if(StringUtils.isEmpty(spanHtml)){
			return "";
		} else {
			return spanHtml.split("\\|")[3].trim();
		}
	}
	/**
	 * 格式yyyy.MM.dd HH:mm:ss --> yyyy-MM-dd HH:mm:ss
	 * @param spanHtml
	 * @return
	 */
	private static String dateTran(String dateTime){
		if(StringUtils.isEmpty(dateTime)){
			return null;
		} else {
			Date d = new Date();
			SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
			SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			try {
				d =formatter1.parse(dateTime);
			} catch (ParseException e) {
				e.printStackTrace();
			}
			return formatter2.format(d);
		}
	}
	public static void main(String[] args) {
//		System.out.println(getLocation("2015.07.22 23:19:31 | 采购人：桂林市七星区人民政府采购中心 | 代理机构：桂林市七星区人民政府采购中心 竞争性谈判公告 | 广西 | 货物类/办公消耗用品/其他消耗用品"));
//		System.out.println(getLocation("2015.07.22 22:16:09 | 采购人：莱芜战役纪念馆 | 代理机构：莱芜市公平基建审计咨询有限责任公司 其它公告 | 山东 |"));
		System.out.println(dateTran("2015.07.22 22:16:09"));
	}
}
